//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

function write(v) { WScript.Echo(v + ""); }

function foo() {}

write(new String('he' + 'llo') & new Object());
write(new String('he' + 'llo') & new Object());
write(new String('he' + 'llo') & [1, 2, 3]);
write(new String('he' + 'llo') & [1 ,2 , 3]);
write(new String('he' + 'llo') & new Array(3));
write(new String('he' + 'llo') & Array(3));
write(new String('he' + 'llo') & new Array(1 ,2 ,3));
write(new String('he' + 'llo') & Array(1));
write(new String('he' + 'llo') & foo);
write(new Object() & undefined);
write(new Object() & null);
write(new Object() & true);
write(new Object() & false);
write(new Object() & Boolean(true));
write(new Object() & Boolean(false));
write(new Object() & new Boolean(true));
write(new Object() & new Boolean(false));
write(new Object() & NaN);
write(new Object() & +0);
write(new Object() & -0);
write(new Object() & 0);
write(new Object() & 0.0);
write(new Object() & -0.0);
write(new Object() & +0.0);
write(new Object() & 1);
write(new Object() & 10);
write(new Object() & 10.0);
write(new Object() & 10.1);
write(new Object() & -1);
write(new Object() & -10);
write(new Object() & -10.0);
write(new Object() & -10.1);
write(new Object() & Number.MAX_VALUE);
write(new Object() & Number.MIN_VALUE);
write(new Object() & Number.NaN);
write(new Object() & Number.POSITIVE_INFINITY);
write(new Object() & Number.NEGATIVE_INFINITY);
write(new Object() & new Number(NaN));
write(new Object() & new Number(+0));
write(new Object() & new Number(-0));
write(new Object() & new Number(0));
write(new Object() & new Number(0.0));
write(new Object() & new Number(-0.0));
write(new Object() & new Number(+0.0));
write(new Object() & new Number(1));
write(new Object() & new Number(10));
write(new Object() & new Number(10.0));
write(new Object() & new Number(10.1));
write(new Object() & new Number(-1));
write(new Object() & new Number(-10));
write(new Object() & new Number(-10.0));
write(new Object() & new Number(-10.1));
write(new Object() & new Number(Number.MAX_VALUE));
write(new Object() & new Number(Number.MIN_VALUE));
write(new Object() & new Number(Number.NaN));
write(new Object() & new Number(Number.POSITIVE_INFINITY));
write(new Object() & new Number(Number.NEGATIVE_INFINITY));
write(new Object() & '');
write(new Object() & 0xa);
write(new Object() & 04);
write(new Object() & 'hello');
write(new Object() & 'hel' + 'lo');
write(new Object() & String(''));
write(new Object() & String('hello'));
write(new Object() & String('h' + 'ello'));
write(new Object() & new String(''));
write(new Object() & new String('hello'));
write(new Object() & new String('he' + 'llo'));
write(new Object() & new Object());
write(new Object() & new Object());
write(new Object() & [1, 2, 3]);
write(new Object() & [1 ,2 , 3]);
write(new Object() & new Array(3));
write(new Object() & Array(3));
write(new Object() & new Array(1 ,2 ,3));
write(new Object() & Array(1));
write(new Object() & foo);
write(new Object() & undefined);
write(new Object() & null);
write(new Object() & true);
write(new Object() & false);
write(new Object() & Boolean(true));
write(new Object() & Boolean(false));
write(new Object() & new Boolean(true));
write(new Object() & new Boolean(false));
write(new Object() & NaN);
write(new Object() & +0);
write(new Object() & -0);
write(new Object() & 0);
write(new Object() & 0.0);
write(new Object() & -0.0);
write(new Object() & +0.0);
write(new Object() & 1);
write(new Object() & 10);
write(new Object() & 10.0);
write(new Object() & 10.1);
write(new Object() & -1);
write(new Object() & -10);
write(new Object() & -10.0);
write(new Object() & -10.1);
write(new Object() & Number.MAX_VALUE);
write(new Object() & Number.MIN_VALUE);
write(new Object() & Number.NaN);
write(new Object() & Number.POSITIVE_INFINITY);
write(new Object() & Number.NEGATIVE_INFINITY);
write(new Object() & new Number(NaN));
write(new Object() & new Number(+0));
write(new Object() & new Number(-0));
write(new Object() & new Number(0));
write(new Object() & new Number(0.0));
write(new Object() & new Number(-0.0));
write(new Object() & new Number(+0.0));
write(new Object() & new Number(1));
write(new Object() & new Number(10));
write(new Object() & new Number(10.0));
write(new Object() & new Number(10.1));
write(new Object() & new Number(-1));
write(new Object() & new Number(-10));
write(new Object() & new Number(-10.0));
write(new Object() & new Number(-10.1));
write(new Object() & new Number(Number.MAX_VALUE));
write(new Object() & new Number(Number.MIN_VALUE));
write(new Object() & new Number(Number.NaN));
write(new Object() & new Number(Number.POSITIVE_INFINITY));
write(new Object() & new Number(Number.NEGATIVE_INFINITY));
write(new Object() & '');
write(new Object() & 0xa);
write(new Object() & 04);
write(new Object() & 'hello');
write(new Object() & 'hel' + 'lo');
write(new Object() & String(''));
write(new Object() & String('hello'));
write(new Object() & String('h' + 'ello'));
write(new Object() & new String(''));
write(new Object() & new String('hello'));
write(new Object() & new String('he' + 'llo'));
write(new Object() & new Object());
write(new Object() & new Object());
write(new Object() & [1, 2, 3]);
write(new Object() & [1 ,2 , 3]);
write(new Object() & new Array(3));
write(new Object() & Array(3));
write(new Object() & new Array(1 ,2 ,3));
write(new Object() & Array(1));
write(new Object() & foo);
write([1, 2, 3] & undefined);
write([1, 2, 3] & null);
write([1, 2, 3] & true);
write([1, 2, 3] & false);
write([1, 2, 3] & Boolean(true));
write([1, 2, 3] & Boolean(false));
write([1, 2, 3] & new Boolean(true));
write([1, 2, 3] & new Boolean(false));
write([1, 2, 3] & NaN);
write([1, 2, 3] & +0);
write([1, 2, 3] & -0);
write([1, 2, 3] & 0);
write([1, 2, 3] & 0.0);
write([1, 2, 3] & -0.0);
write([1, 2, 3] & +0.0);
write([1, 2, 3] & 1);
write([1, 2, 3] & 10);
write([1, 2, 3] & 10.0);
write([1, 2, 3] & 10.1);
write([1, 2, 3] & -1);
write([1, 2, 3] & -10);
write([1, 2, 3] & -10.0);
write([1, 2, 3] & -10.1);
write([1, 2, 3] & Number.MAX_VALUE);
write([1, 2, 3] & Number.MIN_VALUE);
write([1, 2, 3] & Number.NaN);
write([1, 2, 3] & Number.POSITIVE_INFINITY);
write([1, 2, 3] & Number.NEGATIVE_INFINITY);
write([1, 2, 3] & new Number(NaN));
write([1, 2, 3] & new Number(+0));
write([1, 2, 3] & new Number(-0));
write([1, 2, 3] & new Number(0));
write([1, 2, 3] & new Number(0.0));
write([1, 2, 3] & new Number(-0.0));
write([1, 2, 3] & new Number(+0.0));
write([1, 2, 3] & new Number(1));
write([1, 2, 3] & new Number(10));
write([1, 2, 3] & new Number(10.0));
write([1, 2, 3] & new Number(10.1));
write([1, 2, 3] & new Number(-1));
write([1, 2, 3] & new Number(-10));
write([1, 2, 3] & new Number(-10.0));
write([1, 2, 3] & new Number(-10.1));
write([1, 2, 3] & new Number(Number.MAX_VALUE));
write([1, 2, 3] & new Number(Number.MIN_VALUE));
write([1, 2, 3] & new Number(Number.NaN));
write([1, 2, 3] & new Number(Number.POSITIVE_INFINITY));
write([1, 2, 3] & new Number(Number.NEGATIVE_INFINITY));
write([1, 2, 3] & '');
write([1, 2, 3] & 0xa);
write([1, 2, 3] & 04);
write([1, 2, 3] & 'hello');
write([1, 2, 3] & 'hel' + 'lo');
write([1, 2, 3] & String(''));
write([1, 2, 3] & String('hello'));
write([1, 2, 3] & String('h' + 'ello'));
write([1, 2, 3] & new String(''));
write([1, 2, 3] & new String('hello'));
write([1, 2, 3] & new String('he' + 'llo'));
write([1, 2, 3] & new Object());
write([1, 2, 3] & new Object());
write([1, 2, 3] & [1, 2, 3]);
write([1, 2, 3] & [1 ,2 , 3]);
write([1, 2, 3] & new Array(3));
write([1, 2, 3] & Array(3));
write([1, 2, 3] & new Array(1 ,2 ,3));
write([1, 2, 3] & Array(1));
write([1, 2, 3] & foo);
write([1 ,2 , 3] & undefined);
write([1 ,2 , 3] & null);
write([1 ,2 , 3] & true);
write([1 ,2 , 3] & false);
write([1 ,2 , 3] & Boolean(true));
write([1 ,2 , 3] & Boolean(false));
write([1 ,2 , 3] & new Boolean(true));
write([1 ,2 , 3] & new Boolean(false));
write([1 ,2 , 3] & NaN);
write([1 ,2 , 3] & +0);
write([1 ,2 , 3] & -0);
write([1 ,2 , 3] & 0);
write([1 ,2 , 3] & 0.0);
write([1 ,2 , 3] & -0.0);
write([1 ,2 , 3] & +0.0);
write([1 ,2 , 3] & 1);
write([1 ,2 , 3] & 10);
write([1 ,2 , 3] & 10.0);
write([1 ,2 , 3] & 10.1);
write([1 ,2 , 3] & -1);
write([1 ,2 , 3] & -10);
write([1 ,2 , 3] & -10.0);
write([1 ,2 , 3] & -10.1);
write([1 ,2 , 3] & Number.MAX_VALUE);
write([1 ,2 , 3] & Number.MIN_VALUE);
write([1 ,2 , 3] & Number.NaN);
write([1 ,2 , 3] & Number.POSITIVE_INFINITY);
write([1 ,2 , 3] & Number.NEGATIVE_INFINITY);
write([1 ,2 , 3] & new Number(NaN));
write([1 ,2 , 3] & new Number(+0));
write([1 ,2 , 3] & new Number(-0));
write([1 ,2 , 3] & new Number(0));
write([1 ,2 , 3] & new Number(0.0));
write([1 ,2 , 3] & new Number(-0.0));
write([1 ,2 , 3] & new Number(+0.0));
write([1 ,2 , 3] & new Number(1));
write([1 ,2 , 3] & new Number(10));
write([1 ,2 , 3] & new Number(10.0));
write([1 ,2 , 3] & new Number(10.1));
write([1 ,2 , 3] & new Number(-1));
write([1 ,2 , 3] & new Number(-10));
write([1 ,2 , 3] & new Number(-10.0));
write([1 ,2 , 3] & new Number(-10.1));
write([1 ,2 , 3] & new Number(Number.MAX_VALUE));
write([1 ,2 , 3] & new Number(Number.MIN_VALUE));
write([1 ,2 , 3] & new Number(Number.NaN));
write([1 ,2 , 3] & new Number(Number.POSITIVE_INFINITY));
write([1 ,2 , 3] & new Number(Number.NEGATIVE_INFINITY));
write([1 ,2 , 3] & '');
write([1 ,2 , 3] & 0xa);
write([1 ,2 , 3] & 04);
write([1 ,2 , 3] & 'hello');
write([1 ,2 , 3] & 'hel' + 'lo');
write([1 ,2 , 3] & String(''));
write([1 ,2 , 3] & String('hello'));
write([1 ,2 , 3] & String('h' + 'ello'));
write([1 ,2 , 3] & new String(''));
write([1 ,2 , 3] & new String('hello'));
write([1 ,2 , 3] & new String('he' + 'llo'));
write([1 ,2 , 3] & new Object());
write([1 ,2 , 3] & new Object());
write([1 ,2 , 3] & [1, 2, 3]);
write([1 ,2 , 3] & [1 ,2 , 3]);
write([1 ,2 , 3] & new Array(3));
write([1 ,2 , 3] & Array(3));
write([1 ,2 , 3] & new Array(1 ,2 ,3));
write([1 ,2 , 3] & Array(1));
write([1 ,2 , 3] & foo);
write(new Array(3) & undefined);
write(new Array(3) & null);
write(new Array(3) & true);
write(new Array(3) & false);
write(new Array(3) & Boolean(true));
write(new Array(3) & Boolean(false));
write(new Array(3) & new Boolean(true));
write(new Array(3) & new Boolean(false));
write(new Array(3) & NaN);
write(new Array(3) & +0);
write(new Array(3) & -0);
write(new Array(3) & 0);
write(new Array(3) & 0.0);
write(new Array(3) & -0.0);
write(new Array(3) & +0.0);
write(new Array(3) & 1);
write(new Array(3) & 10);
write(new Array(3) & 10.0);
write(new Array(3) & 10.1);
write(new Array(3) & -1);
write(new Array(3) & -10);
write(new Array(3) & -10.0);
write(new Array(3) & -10.1);
write(new Array(3) & Number.MAX_VALUE);
write(new Array(3) & Number.MIN_VALUE);
write(new Array(3) & Number.NaN);
write(new Array(3) & Number.POSITIVE_INFINITY);
write(new Array(3) & Number.NEGATIVE_INFINITY);
write(new Array(3) & new Number(NaN));
write(new Array(3) & new Number(+0));
write(new Array(3) & new Number(-0));
write(new Array(3) & new Number(0));
write(new Array(3) & new Number(0.0));
write(new Array(3) & new Number(-0.0));
write(new Array(3) & new Number(+0.0));
write(new Array(3) & new Number(1));
write(new Array(3) & new Number(10));
write(new Array(3) & new Number(10.0));
write(new Array(3) & new Number(10.1));
write(new Array(3) & new Number(-1));
write(new Array(3) & new Number(-10));
write(new Array(3) & new Number(-10.0));
write(new Array(3) & new Number(-10.1));
write(new Array(3) & new Number(Number.MAX_VALUE));
write(new Array(3) & new Number(Number.MIN_VALUE));
write(new Array(3) & new Number(Number.NaN));
write(new Array(3) & new Number(Number.POSITIVE_INFINITY));
write(new Array(3) & new Number(Number.NEGATIVE_INFINITY));
write(new Array(3) & '');
write(new Array(3) & 0xa);
write(new Array(3) & 04);
write(new Array(3) & 'hello');
write(new Array(3) & 'hel' + 'lo');
write(new Array(3) & String(''));
write(new Array(3) & String('hello'));
write(new Array(3) & String('h' + 'ello'));
write(new Array(3) & new String(''));
write(new Array(3) & new String('hello'));
write(new Array(3) & new String('he' + 'llo'));
write(new Array(3) & new Object());
write(new Array(3) & new Object());
write(new Array(3) & [1, 2, 3]);
write(new Array(3) & [1 ,2 , 3]);
write(new Array(3) & new Array(3));
write(new Array(3) & Array(3));
write(new Array(3) & new Array(1 ,2 ,3));
write(new Array(3) & Array(1));
write(new Array(3) & foo);
write(Array(3) & undefined);
write(Array(3) & null);
write(Array(3) & true);
write(Array(3) & false);
write(Array(3) & Boolean(true));
write(Array(3) & Boolean(false));
write(Array(3) & new Boolean(true));
write(Array(3) & new Boolean(false));
write(Array(3) & NaN);
write(Array(3) & +0);
write(Array(3) & -0);
write(Array(3) & 0);
write(Array(3) & 0.0);
write(Array(3) & -0.0);
write(Array(3) & +0.0);
write(Array(3) & 1);
write(Array(3) & 10);
write(Array(3) & 10.0);
write(Array(3) & 10.1);
write(Array(3) & -1);
write(Array(3) & -10);
write(Array(3) & -10.0);
write(Array(3) & -10.1);
write(Array(3) & Number.MAX_VALUE);
write(Array(3) & Number.MIN_VALUE);
write(Array(3) & Number.NaN);
write(Array(3) & Number.POSITIVE_INFINITY);
write(Array(3) & Number.NEGATIVE_INFINITY);
write(Array(3) & new Number(NaN));
write(Array(3) & new Number(+0));
write(Array(3) & new Number(-0));
write(Array(3) & new Number(0));
write(Array(3) & new Number(0.0));
write(Array(3) & new Number(-0.0));
write(Array(3) & new Number(+0.0));
write(Array(3) & new Number(1));
write(Array(3) & new Number(10));
write(Array(3) & new Number(10.0));
write(Array(3) & new Number(10.1));
write(Array(3) & new Number(-1));
write(Array(3) & new Number(-10));
write(Array(3) & new Number(-10.0));
write(Array(3) & new Number(-10.1));
write(Array(3) & new Number(Number.MAX_VALUE));
write(Array(3) & new Number(Number.MIN_VALUE));
write(Array(3) & new Number(Number.NaN));
write(Array(3) & new Number(Number.POSITIVE_INFINITY));
write(Array(3) & new Number(Number.NEGATIVE_INFINITY));
write(Array(3) & '');
write(Array(3) & 0xa);
write(Array(3) & 04);
write(Array(3) & 'hello');
write(Array(3) & 'hel' + 'lo');
write(Array(3) & String(''));
write(Array(3) & String('hello'));
write(Array(3) & String('h' + 'ello'));
write(Array(3) & new String(''));
write(Array(3) & new String('hello'));
write(Array(3) & new String('he' + 'llo'));
write(Array(3) & new Object());
write(Array(3) & new Object());
write(Array(3) & [1, 2, 3]);
write(Array(3) & [1 ,2 , 3]);
write(Array(3) & new Array(3));
write(Array(3) & Array(3));
write(Array(3) & new Array(1 ,2 ,3));
write(Array(3) & Array(1));
write(Array(3) & foo);
write(new Array(1 ,2 ,3) & undefined);
write(new Array(1 ,2 ,3) & null);
write(new Array(1 ,2 ,3) & true);
write(new Array(1 ,2 ,3) & false);
write(new Array(1 ,2 ,3) & Boolean(true));
write(new Array(1 ,2 ,3) & Boolean(false));
write(new Array(1 ,2 ,3) & new Boolean(true));
write(new Array(1 ,2 ,3) & new Boolean(false));
write(new Array(1 ,2 ,3) & NaN);
write(new Array(1 ,2 ,3) & +0);
write(new Array(1 ,2 ,3) & -0);
write(new Array(1 ,2 ,3) & 0);
write(new Array(1 ,2 ,3) & 0.0);
write(new Array(1 ,2 ,3) & -0.0);
write(new Array(1 ,2 ,3) & +0.0);
write(new Array(1 ,2 ,3) & 1);
write(new Array(1 ,2 ,3) & 10);
write(new Array(1 ,2 ,3) & 10.0);
write(new Array(1 ,2 ,3) & 10.1);
write(new Array(1 ,2 ,3) & -1);
write(new Array(1 ,2 ,3) & -10);
write(new Array(1 ,2 ,3) & -10.0);
write(new Array(1 ,2 ,3) & -10.1);
write(new Array(1 ,2 ,3) & Number.MAX_VALUE);
write(new Array(1 ,2 ,3) & Number.MIN_VALUE);
write(new Array(1 ,2 ,3) & Number.NaN);
write(new Array(1 ,2 ,3) & Number.POSITIVE_INFINITY);
write(new Array(1 ,2 ,3) & Number.NEGATIVE_INFINITY);
write(new Array(1 ,2 ,3) & new Number(NaN));
write(new Array(1 ,2 ,3) & new Number(+0));
write(new Array(1 ,2 ,3) & new Number(-0));
write(new Array(1 ,2 ,3) & new Number(0));
write(new Array(1 ,2 ,3) & new Number(0.0));
write(new Array(1 ,2 ,3) & new Number(-0.0));
write(new Array(1 ,2 ,3) & new Number(+0.0));
write(new Array(1 ,2 ,3) & new Number(1));
write(new Array(1 ,2 ,3) & new Number(10));
write(new Array(1 ,2 ,3) & new Number(10.0));
write(new Array(1 ,2 ,3) & new Number(10.1));
write(new Array(1 ,2 ,3) & new Number(-1));
write(new Array(1 ,2 ,3) & new Number(-10));
write(new Array(1 ,2 ,3) & new Number(-10.0));
write(new Array(1 ,2 ,3) & new Number(-10.1));
write(new Array(1 ,2 ,3) & new Number(Number.MAX_VALUE));
write(new Array(1 ,2 ,3) & new Number(Number.MIN_VALUE));
write(new Array(1 ,2 ,3) & new Number(Number.NaN));
write(new Array(1 ,2 ,3) & new Number(Number.POSITIVE_INFINITY));
write(new Array(1 ,2 ,3) & new Number(Number.NEGATIVE_INFINITY));
write(new Array(1 ,2 ,3) & '');
write(new Array(1 ,2 ,3) & 0xa);
write(new Array(1 ,2 ,3) & 04);
write(new Array(1 ,2 ,3) & 'hello');
write(new Array(1 ,2 ,3) & 'hel' + 'lo');
write(new Array(1 ,2 ,3) & String(''));
write(new Array(1 ,2 ,3) & String('hello'));
write(new Array(1 ,2 ,3) & String('h' + 'ello'));
write(new Array(1 ,2 ,3) & new String(''));
write(new Array(1 ,2 ,3) & new String('hello'));
write(new Array(1 ,2 ,3) & new String('he' + 'llo'));
write(new Array(1 ,2 ,3) & new Object());
write(new Array(1 ,2 ,3) & new Object());
write(new Array(1 ,2 ,3) & [1, 2, 3]);
write(new Array(1 ,2 ,3) & [1 ,2 , 3]);
write(new Array(1 ,2 ,3) & new Array(3));
write(new Array(1 ,2 ,3) & Array(3));
write(new Array(1 ,2 ,3) & new Array(1 ,2 ,3));
write(new Array(1 ,2 ,3) & Array(1));
write(new Array(1 ,2 ,3) & foo);
write(Array(1) & undefined);
write(Array(1) & null);
write(Array(1) & true);
write(Array(1) & false);
write(Array(1) & Boolean(true));
write(Array(1) & Boolean(false));
write(Array(1) & new Boolean(true));
write(Array(1) & new Boolean(false));
write(Array(1) & NaN);
write(Array(1) & +0);
write(Array(1) & -0);
write(Array(1) & 0);
write(Array(1) & 0.0);
write(Array(1) & -0.0);
write(Array(1) & +0.0);
write(Array(1) & 1);
write(Array(1) & 10);
write(Array(1) & 10.0);
write(Array(1) & 10.1);
write(Array(1) & -1);
write(Array(1) & -10);
write(Array(1) & -10.0);
write(Array(1) & -10.1);
write(Array(1) & Number.MAX_VALUE);
write(Array(1) & Number.MIN_VALUE);
write(Array(1) & Number.NaN);
write(Array(1) & Number.POSITIVE_INFINITY);
write(Array(1) & Number.NEGATIVE_INFINITY);
write(Array(1) & new Number(NaN));
write(Array(1) & new Number(+0));
write(Array(1) & new Number(-0));
write(Array(1) & new Number(0));
write(Array(1) & new Number(0.0));
write(Array(1) & new Number(-0.0));
write(Array(1) & new Number(+0.0));
write(Array(1) & new Number(1));
write(Array(1) & new Number(10));
write(Array(1) & new Number(10.0));
write(Array(1) & new Number(10.1));
write(Array(1) & new Number(-1));
write(Array(1) & new Number(-10));
write(Array(1) & new Number(-10.0));
write(Array(1) & new Number(-10.1));
write(Array(1) & new Number(Number.MAX_VALUE));
write(Array(1) & new Number(Number.MIN_VALUE));
write(Array(1) & new Number(Number.NaN));
write(Array(1) & new Number(Number.POSITIVE_INFINITY));
write(Array(1) & new Number(Number.NEGATIVE_INFINITY));
write(Array(1) & '');
write(Array(1) & 0xa);
write(Array(1) & 04);
write(Array(1) & 'hello');
write(Array(1) & 'hel' + 'lo');
write(Array(1) & String(''));
write(Array(1) & String('hello'));
write(Array(1) & String('h' + 'ello'));
write(Array(1) & new String(''));
write(Array(1) & new String('hello'));
write(Array(1) & new String('he' + 'llo'));
write(Array(1) & new Object());
write(Array(1) & new Object());
write(Array(1) & [1, 2, 3]);
write(Array(1) & [1 ,2 , 3]);
write(Array(1) & new Array(3));
write(Array(1) & Array(3));
write(Array(1) & new Array(1 ,2 ,3));
write(Array(1) & Array(1));
write(Array(1) & foo);
write(foo & undefined);
write(foo & null);
write(foo & true);
write(foo & false);
write(foo & Boolean(true));
write(foo & Boolean(false));
write(foo & new Boolean(true));
write(foo & new Boolean(false));
write(foo & NaN);
write(foo & +0);
write(foo & -0);
write(foo & 0);
write(foo & 0.0);
write(foo & -0.0);
write(foo & +0.0);
write(foo & 1);
write(foo & 10);
write(foo & 10.0);
write(foo & 10.1);
write(foo & -1);
write(foo & -10);
write(foo & -10.0);
write(foo & -10.1);
write(foo & Number.MAX_VALUE);
write(foo & Number.MIN_VALUE);
write(foo & Number.NaN);
write(foo & Number.POSITIVE_INFINITY);
write(foo & Number.NEGATIVE_INFINITY);
write(foo & new Number(NaN));
write(foo & new Number(+0));
write(foo & new Number(-0));
write(foo & new Number(0));
write(foo & new Number(0.0));
write(foo & new Number(-0.0));
write(foo & new Number(+0.0));
write(foo & new Number(1));
write(foo & new Number(10));
write(foo & new Number(10.0));
write(foo & new Number(10.1));
write(foo & new Number(-1));
write(foo & new Number(-10));
write(foo & new Number(-10.0));
write(foo & new Number(-10.1));
write(foo & new Number(Number.MAX_VALUE));
write(foo & new Number(Number.MIN_VALUE));
write(foo & new Number(Number.NaN));
write(foo & new Number(Number.POSITIVE_INFINITY));
write(foo & new Number(Number.NEGATIVE_INFINITY));
write(foo & '');
write(foo & 0xa);
write(foo & 04);
write(foo & 'hello');
write(foo & 'hel' + 'lo');
write(foo & String(''));
write(foo & String('hello'));
write(foo & String('h' + 'ello'));
write(foo & new String(''));
write(foo & new String('hello'));
write(foo & new String('he' + 'llo'));
write(foo & new Object());
write(foo & new Object());
write(foo & [1, 2, 3]);
write(foo & [1 ,2 , 3]);
write(foo & new Array(3));
write(foo & Array(3));
write(foo & new Array(1 ,2 ,3));
write(foo & Array(1));
write(foo & foo);
